#include <stdio.h>

//二分查找 binary search   折半查找 half search
/*
 *
 * 对于一个有序数组，可以使用二分查找
 * 核心思想：
 * 定义两个指针L和H（其实是两个保存最高位最低位下标值的变量），分别指向最低最高
 * 搜索范围：[L,H] 0,m
 * 通过公式mid =(L+H)/2来获得中间位置的下标值
 * 假设要找的值位value，数组为升序数组arr
 *   value > arr[mid]  在右半部分查找  L 指针向后移动，移动到中间值的后一位
 *   value < arr[mid]  在左半部分查找  H 指针向前移动，移动到中间值的前一位
 *   value == arr[mid]  找到
 * */
/*
 * arr:升序数组
 * value:待查找值
 * low:数组的最低位指针（下标值）
 * high:数组的最高位指针（下标值）
 * */
int binarySearch(int arr[],int value,int low,int high){
    int mid ;
    while (low<=high){
        mid=(low+high)/2;
        if(value >arr[mid])
            low =mid+1;
        else if(value < arr[mid])
            high =mid-1;
        else
            return mid;
    }
    return -1;

}

int main() {
    printf("Hello, World!\n");
    return 0;
}
